/**
 * 通过mutation间接更新state的多个方法的对象
 */

import {
    selectRegionByKeyword,
} from '@/api'
import {
    CLEAR_REGION_LIST, INIT_GEOLOCATION, INIT_MAP,
    SEARCH_REGION_LIST, SET_OPERATOR_INDEX,
} from "@/store/mutation-types";

export default {
    // 获取搜索地区列表
    async selectRegionByKeyword(context, {query, tag, region}) {
        // 发送异步ajax请求
        const result = await selectRegionByKeyword({query, tag, region})
        // 提交一个mutation
        context.commit(SEARCH_REGION_LIST, result.results);
    },

    // 清除搜索地区列表
    clearRegionByKeyword(context) {
        // 提交一个mutation
        context.commit(CLEAR_REGION_LIST);
    },

    // 初始化地图
    initMap(context, map) {
        // 提交一个mutation
        context.commit(INIT_MAP, map);
    },

    // 初始化当前位置实例
    initGeolocation(context, geolocation) {
        // 提交一个mutation
        context.commit(INIT_GEOLOCATION, geolocation);
    },

    // 定位当前位置
    localPosition(context) {
        let map = context.state.map
        context.state.geolocation.getCurrentPosition(function (r) {
            if (this.getStatus() === BMAP_STATUS_SUCCESS) {
                map.clearOverlays();
                //初始化锚点
                let mk = new BMapGL.Marker(r.point);
                map.addOverlay(mk);
                map.panTo(r.point);
                // 初始化地图,设置中心点坐标和地图级别
                map.centerAndZoom(new BMapGL.Point(r.point.lng, r.point.lat), 12);
                // 开启鼠标滚轮缩放
                map.enableScrollWheelZoom(true);
            } else {
                alert("获取定位失败");
            }
        });
    },

    //设置操作位置
    setOperatorIndex(context, index) {
        // 提交一个mutation
        context.commit(SET_OPERATOR_INDEX, index);
    },

}
